Skip to content

fix(approve-installplan): version-gate InstallPlan approval against p…#80

Draft
cjeanner wants to merge 2 commits into
mainfrom
fix/version-gated-installplan-approval
Draft

fix(approve-installplan): version-gate InstallPlan approval against p…#80
cjeanner wants to merge 2 commits into
mainfrom
fix/version-gated-installplan-approval

Conversation

@cjeanner

Copy link
Copy Markdown
Collaborator

…inned startingCSV

The Job could auto-approve an InstallPlan for a newer CSV than what pin-version pins. OLM treats startingCSV as a floor, not a ceiling — if the catalog offers a higher version in the same channel, OLM resolves to that version and the Job blindly approves it, causing version drift.

Read the Subscription's spec.startingCSV before polling. When set, only approve InstallPlans whose clusterServiceVersionNames list contains the pinned CSV; fail fast with a clear error when a wrong-version InstallPlan is found. When startingCSV is not set (no pin-version component), fall back to the original behavior.

…inned startingCSV

The Job could auto-approve an InstallPlan for a newer CSV than what
pin-version pins. OLM treats startingCSV as a floor, not a ceiling —
if the catalog offers a higher version in the same channel, OLM
resolves to that version and the Job blindly approves it, causing
version drift.

Read the Subscription's spec.startingCSV before polling. When set,
only approve InstallPlans whose clusterServiceVersionNames list
contains the pinned CSV; fail fast with a clear error when a
wrong-version InstallPlan is found. When startingCSV is not set
(no pin-version component), fall back to the original behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@cjeanner cjeanner self-assigned this Jul 17, 2026
…etection

The previous check (`oc get openstack openstack`) races with the
openstack-operator-cr ArgoCD app which creates the OpenStack CR
before the Job reaches its detection logic. On initial install this
causes the Job to enter wait_for_new_version, which times out
because deployedVersion is not set until the full controlplane
deploys.

Check OpenStackVersion.status.deployedVersion instead: if absent,
this is an initial install (wait_for_crd); if present, it is a
genuine update (wait_for_new_version).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant